運算子庫:硬體平台
此運算子代表 CXP 攝影機與VisualApplets 之間的 影像資料介面。此運算子可用於單 通道、雙通道或四通道的 CXP 介面。介面類型可透過 參數ConnectionCount 進行選取。無論攝影機傳送的格式為何,此運算子皆會輸出原始 影像資料。接著,您需要將此 影像資料轉換為相機傳送的格式。要轉換影像資料,請使用 適當的操作元來彙總並將原始位元組值轉換為像素值 。運作期間的某些情況可能會 透過下文所述的事件系統進行通報。此外,此操作元還具備 各種參數,用以指示與相機的連線狀態。
若操作員偵測到幀的尺寸 比攝影機在 CXP 影像標頭中指定的尺寸更大 或更小,則安全 電路將會啟動。 操作員隨後會裁切超出範圍的像素與行, 以確保VisualApplets 始終接收與影像標頭中定義相符的幀尺寸。若 幀的尺寸小於影像標頭中指定的規格, 操作員將以未定義的資料填補接收到的幀,以達到 影像標頭中定義的指定幀尺寸。 填補較小的幀可能會 導致後續幀遺失。此類遺失將以事件形式回報給 軟體,此外,尺寸不匹配也會觸發一個事件。
| 適用於硬體平台 |
|---|
| imaFlex CXP-12 Penta |
| imaFlex CXP-12 Quad |
在……中的實例化 VisualApplets
運算子在其輸出 O 上提供影像資料。此輸出始終存在。除了此標準輸出連接埠外,您還可以針對 CXP 標頭詮釋資料(meta-data)配置選用的 MetaDataO 輸出。在運算子實例化期間將顯示以下彈出式對話方塊:

在這裡,您可以指定選用的詮釋資料連接埠。如果您將連接埠可用性設為「0」(預設值),則該連接埠將不會存在於運算子中。如果您將連接埠可用性設為 1,則詮釋資料連接埠將可在運算子介面中使用。
選用的 MetaDataO 連接埠
32 位元輸出的格式如 下圖所示。

每個 CXP 幀皆提供一個對應的 無錯誤影像標頭。若影像標頭不正確,則不會將任何影像串流資料傳入 VisualApplets 處理管道。壓縮後的影像標頭由 6 個字組成。其中 最後一個位元組用於儲存附加資訊,此資訊僅供內部使用。 特別是,HeaderError 位元會指示影像標頭本身是否發生錯誤, 抑或未發生錯誤。
| 影像標頭 | 描述 |
|---|---|
| StreamId | CXP 資料流的 ID |
| 標籤 | 16 位元來源影像索引。對於每個傳輸的影像,此索引會遞增,並在達到 0xFFFF 時循環歸零。包含與相同影像相關之資料的每個串流都應使用相同的編號(在多擷取端點串流的情況下)。 |
| XSize | 表示以像素為單位的影像寬度的 24 位元值。 |
| XOff | 表示影像相對於完整裝置影像最左側像素之水平位移(以像素為單位)的 24 位元值。 |
| YSize | 代表影像高度(以像素為單位)的 24 位元數值。此數值在 線掃描影像中會設定為 0。CameraScanMode參數始終顯示從此數值讀取的 相機類型。若O.Img 通訊協定 設定為 VALT_LINE1D 時,處理過程中將忽略 YSize,且 運算子會將所有傳入資料輸出為無盡的行流。若 影像通訊協定設定為 VALT_IMAGE2D,YSize=0 也會導致 產生無盡的行流。 |
| YOff | 表示影像相對於完整裝置影像頂端線條之垂直位移(以像素為單位)的 24 位元值。對於線形掃描影像,此值設為 0。 |
| DSizeL | 表示每條影像線之資料字組數的 24 位元值。 |
| PixelF | 表示 pixel format 的 16 位元值。 |
| TapG | 表示擷取端點幾何形狀的 16 位元值。 |
| 旗標 | 影像旗標。 |
| x 鏡射 | (尚未使用)。用以描述傳入的影像是否為 X 鏡像,或 並非 X 鏡像。 |
| y-Mirror | (尚未使用)。描述傳入的影像是否經過 y 軸鏡像處理, 抑或未經處理。 |
| HeaderError |
1:影像標頭出現錯誤,且該幀被宣告為遺失。在運算者的 輸出資料流中不存在對應的影像資料。 0:影像標頭正確,且在運算子輸出資料流中存在對應的影像資料。 |
![]() |
Image Protocol: Area and Line Scan Cameras |
|---|---|
|
影像 協定對攝影師輸出有兩種不同的影響。
CameraScanMode參數始終顯示從 CXP 標頭讀取的 相機類型。若O.Img 通訊協定設定為 VALT_LINE1D, 則處理時會忽略 YSize,且操作員會將所有傳入資料輸出為 無盡的線條流。 若影像通訊協定設定為 VALT_IMAGE2D,YSize=0 亦 會導致無盡的線條流,進而產生超過 O Max Img Height 的影像。 超大尺寸的影像可能會導致 在設計中緊接於CxpCamera運算子之後的運算子出現未定義的行為。 為避免此情況,建議將輸入的線流分割成多個影像,例如使用SplitImage運算子。 |
裝置資源使用情況
該運算子會根據 ConnectionCount 參數的設定, 使用一個或多個類型為 CameraPort的資源。 對於事件 系統,會使用類型為 EventPort的資源。若 ConnectionCount設定為 X4(四通道),則資源對話方塊 外觀如下:

![]() |
修改 Image Width 與 Image Height |
|---|---|
|
透過輸出連結的最大影像寬度和高度屬性,您可以將寬度和高度調整為相機特定的設定。但是,運算子連接埠 O 上的最大影像寬度 必須能夠被連接埠 O 的 Parallelism 整除。因此,請確保最大影像寬度能被連接埠 O 的 Parallelism 整除! |
錯誤處理與事件系統
當操作員偵測到接收到的 重建影像框比攝影機在 CXP 影像標頭中傳送的尺寸更大或更小時,安全電路便會啟動。此時操作員會切除超出 的像素與行,以確保後續的處理流程始終處理的是 影像標頭中定義的影像框尺寸。 若接收到的幀在 尺寸上小於影像標頭中指定的規格,操作員會以未定義的資料填補 接收到的幀,以達到影像標頭中 所定義的指定幀尺寸。填補較小的幀可能會導致後續 幀遺失。 此類遺失將以事件形式通報給軟體(參見 下段)。尺寸不符也會觸發一個事件。
For a set of very critical errors, the operator will forward asynchronous events to the host runtime software (Framegrabber SDK). The event name in the Framegrabber API is <hierarchical operator name>\CxpStreamStatus, e.g. Device1\Process0\Camera\CxpStreamStatus. The event payload is provided as four 16-bit data words. The event format is defined as follows:

-
字組 [0]:
-
bits [0:15]:事件發生所在的 CXP 影像標籤。
-
-
字組 [1]:
-
位元 [8:15]:發生該事件的串流 ID。
-
bits [0:7]:保留,視為無需理會 (don't care)。
-
-
字組 [2]:
-
bit [0]:發生 CRC 錯誤。
-
位元 [1]:在影像標頭中偵測到串流標記錯誤。
-
bit [2]:在影像標頭中偵測到無法修正的錯誤。
-
bit [3]:偵測到影格尺寸錯誤,亦即 CXP 影像標頭中定義的影像尺寸與從傳輸封包重建的影格尺寸不符。當相機在影像標頭中寫入一個資訊,但傳輸的資料量卻與標頭中宣告的不同時,就會發生這種情況。
-
bits [4:15]:保留,視為無需理會 (don't care)。
-
-
字組 [3]:
-
bit [0]:事件類型,0 = Corrupted Entity,1 = Lost Entity。
-
損毀的實體 意指該 錯誤發生於某個幀內,且該幀已 被導入至VisualApplets 處理流程中。
-
遺失實體 意指該 錯誤發生在幀被轉發至 後續操作員之前,且該幀已被 攝影師刪除。
-
當偵測到損毀的實體時, 處理器將依照 CXP 影像標頭定義填補該幀,以確保後續的處理器 不會引發未定義行為。 在此填補過程中,可能會傳來一個新的 幀,但該幀將會遺失。當攝影機傳送的資料 根據幀標籤出現間隙時,也會觸發「實體遺失」 事件。
-
-
位元 [1]:類型 已損毀 實體 的事件已遺失。這表示先前 同類型 「損毀實體」 已遺失。此情況 發生於執行時軟體未對事件作出反應,且 內部事件佇列已滿時。
-
位元 [2]:類型 已遺失實體 已發生。這表示類型 「實體遺失」 的先前事件已遺失。此情況發生於 執行時軟體未對事件作出反應,且內部 事件佇列已滿。
-
位元 [3:15]:遺失的 遺失的實體 事件的數量。
-
事件分為兩種類型:損壞實體事件和遺失實體事件。word 3 的 bit 0 描述了發生的事件類型。如果事件緩衝區已滿,可能會發生事件遺失的情況。當標記損壞實體的事件遺失時,將設定 word 3 的 bit 1。當標記遺失實體的事件遺失時,將設定 word 3 的 bit 2,並且 bit 3 到 15 將提供指示遺失畫格的遺失事件數量。如果設定了 bit 2 但 Counter 為 0,則表示發生了計數器溢位。
每個事件都會引起軟體中斷。為了減少事件數量,可以將多個具有相同畫格標籤的事件合併在一起。在這種情況下,某些錯誤旗標會被組合。如果事件遺失,遺失事件之前的事件將包含有關該遺失事件的資訊,並且無法與具有相同畫格標籤的其他事件進行合併。
由 CRC 錯誤所引發的事件會回報一個 幀標籤,該標籤未必與發生 CRC 錯誤的幀 完全對應。該幀標籤可能是前一幀或下一幀的標籤。這種情況僅會 發生在攝影機傳送的 CXP 封包中,包含兩個或更多 幀之間的轉換時。 CRC 計算雖在封包結尾處完成,但串流資料是 即時重建的。這意味著可能會發生以下情況:當 CRC 錯誤被 偵測到時,操作員可能已經傳送了前一個幀。 在正常 情況下,若攝影機封包中未同時包含當前 幀的結尾與下一幀的開頭資料,則發生 CRC 錯誤時的幀標籤將始終 正確。 對於所有其他情況,只要完整的幀流資料小於 8k 的最大封包大小,一個封包內可能僅會出現 1 個幀重疊。在此 情況下,軟體應用程式應將幀標籤為 -1 的前一幀 以及幀標籤為 +1 的下一幀,一併視為可能已損毀。
| ConnectionCount | |
|---|---|
| Type | 靜態寫入參數 |
| Default | X1 |
| Range | {X1, X2, X4} |
|
參數 ConnectionCount 定義了聚合到 CXP 連線的 CXP 通道數。所使用連接埠的索引由 CameraPort 類型的資源處理。連接埠資源的數量與連線數相符(例如 X2:兩個 CameraPort 資源項目)。 當您實例化多個 CxpCamera 運算子(例如用於雙攝影機 Applet)時,如果使用多個具有相同索引的資源,或者消耗的 CameraPort 資源數量超過最大值 4,則可能會發生資源衝突。在這種情況下,設計規則檢查會回報錯誤。 |
|
| ResetStatus | |
|---|---|
| Type | 動態寫入參數 |
| Default | 關閉 |
| Range | {Off, On} |
|
參數 ResetStatus 會重設攝影機統計資料,即錯誤計數器。 |
|
| UsedConnections | |
|---|---|
| Type | 動態讀取參數 |
| Default | |
| Range | {1,2,4} |
|
參數 UsedConnections 顯示了執行階段由探索軟體設定的 CXP 通道數量。 |
|
| PacketTagErrorCount | |
|---|---|
| Type | 動態讀取參數 |
| Default | |
| Range | [0 : 8191] |
|
參數 PacketTagErrorCount顯示有多少 接收到的封包其標籤不符合 CXP 標準所規定的預期標籤。特別是當在後續流封包標籤的編號中 觀察到間隙時,此值會遞增。 此參數為 13 位元寬,其中位元 [11:0] 代表實際計數器值,而位元 [12] 則表示計數器溢出。當溢出位元被設定時,計數器 值應視為無關。 |
|
| ImageTagErrorCount | |
|---|---|
| Type | 動態讀取參數 |
| Default | |
| Range | [0 : 8191] |
|
此參數用於計算影像標頭標籤、CXP 標準預期的標籤以及接收到的標籤之間發生多少次不匹配。此參數為 13 位元寬,其中位元 [11:0] 代表實際的 Counter 值,而位元 [12] 代表 Counter 溢位。當溢位位元設為 1 時,該 Counter 值應視為無效(don't care)。 |
|
| StreamIdErrorCount | |
|---|---|
| Type | 動態讀取參數 |
| Default | |
| Range | [0 : 8191] |
|
此參數用於計算串流封包中接收到的串流 ID 值與影像標頭中指定的串流 ID 值發生不匹配的頻率。此參數為 13 位元寬,其中位元 [11:0] 代表實際的 Counter 值,而位元 [12] 代表 Counter 溢位。當溢位位元設為 1 時,該 Counter 值應視為無效(don't care)。 |
|
| CorrectedErrorCount | |
|---|---|
| Type | 動態讀取參數 |
| Default | |
| Range | [0 : 8191] |
|
此參數用於計算影像標頭或行標記中偵測到了多少個已修正的錯誤。此參數為 13 位元寬,其中位元 [11:0] 代表實際的 Counter 值,而位元 [12] 代表 Counter 溢位。當溢位位元設為 1 時,該 Counter 值應視為無效(don't care)。 |
|
| UncorrectedErrorCount | |
|---|---|
| Type | 動態讀取參數 |
| Default | |
| Range | [0 : 8191] |
|
此參數用於計算影像標頭或行標記中偵測到的錯誤有多少個因為同一個位元組中有多個位元錯誤而無法修正。此參數為 13 位元寬,其中位元 [11:0] 代表實際的 Counter 值,而位元 [12] 代表 Counter 溢位。當溢位位元設為 1 時,該 Counter 值應視為無效(don't care)。 |
|
| PacketBufferOverflowCount | |
|---|---|
| Type | 動態讀取參數 |
| Default | |
| Range | [0 : 8191] |
|
此參數用於計算在聚合模式(aggregated mode)下進行通道分集(channel bonding)時發生封包緩衝區溢位的頻率。此參數僅適用於 ConnectionCount = X2 或 X4 的情況。此參數為 13 位元寬,其中位元 [11:0] 代表實際的 Counter 值,而位元 [12] 代表 Counter 溢位。當溢位位元設為 1 時,該 Counter 值應視為無效(don't care)。 |
|
| PacketBufferOverflowSource | |
|---|---|
| Type | 動態讀取參數 |
| Default | |
| Range | [0x0 : 0xf] |
|
此參數實作了一個位元遮罩(bit mask),用於查詢封包緩衝區溢位發生在 4 個潛在 CXP 通道中的哪一個。參數寬度取決於 ConnectionCount 參數。在 X1 模式下,參數寬度為 1 位元;在 X2 模式下,參數寬度為 2 位元;而在 X4 模式下,參數寬度為 4 位元。順序為:LSB = 最低 CXP 通道編號,MSB = 操作員配置的最高 CXP 通道編號。 |
|
| CameraScanMode | |
|---|---|
| Type | 動態讀取參數 |
| Default | |
| Range | {area,line} |
|
接收到的影像標頭包含 有關該資料流是適用於區域掃描 (YSize> 0) 還是線性掃描 (YSize= 0) 應用的資訊。此參數顯示 最後一個有效的接收資料流影像標頭資訊。 |
|
| MarkerErrorCount | |
|---|---|
| Type | 動態讀取參數 |
| Default | |
| Range | [0 : 8191] |
|
此參數用於計算 CXP 串流標記與標頭或行標記的順序不正確的頻率。此參數為 13 位元寬,其中位元 [11:0] 代表實際的 Counter 值,而位元 [12] 代表 Counter 溢位。當溢位位元設為 1 時,該 Counter 值應視為無效(don't care)。 |
|
| UnexpectedStartupData | |
|---|---|
| Type | 動態讀取參數 |
| Default | |
| Range | {false, true} |
|
此參數用於偵測錯誤情況:在操作員重設後的第一個資料值是不預期的(即先前未收到任何影像標頭)。這種情況可能是由於相機、擷取卡韌體實作有誤,或是探索程序(discovery procedure)的軟體控制不當所造成。此外,相機的硬體缺陷理論上也可能導致這種情況。 |
|
| FrameLostCount | |
|---|---|
| Type | 動態讀取參數 |
| Default | |
| Range | [0 : 33554431] |
|
此參數用於計算在擷取期間遺失且未傳送至 VisualApplets 管線的影格。當偵測到影像標頭發生錯誤,或某個影格與另一個影格重疊時,就會遺失影格。此參數為 25 位元寬,其中第 [23:0] 位元表示實際的 Counter 值,而第 [24] 位元代表 Counter 溢位。當設定溢位位元時,Counter 值應視為無關 (don't care)。 |
|
| FrameCorruptedCount | |
|---|---|
| Type | 動態讀取參數 |
| Default | |
| Range | [0 : 33554431] |
|
此參數用於計算擷取期間損毀的影格。損毀的影格是指包含錯誤像素並傳送至 VisualApplets 管線的影格。此參數為 25 位元寬,其中第 [23:0] 位元表示實際的 Counter 值,而第 [24] 位元代表 Counter 溢位。當設定溢位位元時,Counter 值應視為無關 (don't care)。 |
|
以下範例展示了 CxpCamera 運算子的使用方式:
-
「CoaXPress 面陣掃描相機 (CoaXPress Area Scan Cameras)」
範例 - 基本擷取
-
「CoaXPress 線形掃描相機 (CoaXPress Line Scan Cameras)」
範例 - 基本擷取
-
'Area Scan Trigger for imaFlex CXP-12 Quad'
介紹了適用於 CoaXPress12 的面陣掃描觸發。 外部來源、內部頻率產生器或軟體觸發脈衝可用於產生觸發。
-
'使用訊號運算子的 imaFlex CXP-12 Quad 線形掃描觸發'
介紹適用於 CoaXPress12 的線形掃描觸發。 此觸發包含使用擷取閘道的影像觸發以及多功能行觸發。 外部來源、內部頻率產生器或軟體觸發脈衝可用於產生觸發。

![[重要]](../common/images/admon/important.png)

上一頁

